/* 全局过滤器 */
const remScale = 100

/*
* 这里即使用全局过滤器也可以单独使用，因为Vue全局过滤器只能在 v-bind 跟 {{}} 中使用。有很大局限性
* rem 图片获取方面全部当做屏幕宽度750处理
* */

// 像素单位类型
export enum PixelUnitType {
  px,
  rem,
}

/*
* 等比缩放，限制在指定w与h的矩形内的最大图片。
* */
export const ImageLfit = (value: string, width: number, height: number, type = PixelUnitType.px) => {
  if (!value) { return value; }
  let widthStr = '';
  let heightStr = '';
  switch (type) {
    case PixelUnitType.px:
      widthStr = width ? `,w_${width}` : '';
      heightStr = height ? `,h_${height}` : '';
      break;
    case PixelUnitType.rem:
      widthStr = width ? `,w_${width * remScale}` : '';
      heightStr = height ? `,h_${height * remScale}` : '';
      break;
  }
  return `${value}?x-oss-process=image/resize,m_lfit${widthStr}${heightStr}`;
};

/*
* 等比缩放，延伸出指定w与h的矩形框外的最小图片
* */
export const ImageMfit = (value: string, width: number, height: number, type = PixelUnitType.px) => {
  if (!value) { return value; }
  switch (type) {
    case PixelUnitType.px:
      return `${value}?x-oss-process=image/resize,m_mfit,w_${width},h_${height}`;
    case PixelUnitType.rem:
      return `${value}?x-oss-process=image/resize,m_mfit,w_${width * remScale},h_${height * remScale}`;
  }
};


/*
* 固定宽高，将延伸出指定w与h的矩形框外的最小图片进行居中裁剪。
* */
export const ImageFill = (value: string, width: number, height: number, type = PixelUnitType.px) => {
  if (!value) { return value; }
  switch (type) {
    case PixelUnitType.px:
      return `${value}?x-oss-process=image/resize,m_fill,w_${width},h_${height}`;
    case PixelUnitType.rem:
      return `${value}?x-oss-process=image/resize,m_fill,w_${width * remScale},h_${height * remScale}`;
  }
};

/*
* 视频接帧
* */
export const VideoFrame = (value: string, t: number, w: number, h: number) => {
  const wStr = w ? `,w_${w}` : '';
  const hStr = h ? `,h_${h}` : '';
  if (!value) { return value; }
  return `${value}?x-oss-process=video/snapshot,t_${t},f_jpg${wStr}${hStr},m_fast`;
};


